home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-06-28 | 699 b | 35 lines | [TEXT/CWIE] |
- // Link.h
-
- #ifndef Link_h
- #define Link_h
-
- #ifndef Assert_h
- #include "Assert.h"
- #endif
-
- template < class TargetType >
- class Link
- {
- private:
- TargetType *target;
-
- public:
- Link( TargetType *t = 0 )
- : target( t )
- {}
-
- bool Null() const { return target == 0; }
- void BeNull() { target = 0; }
-
- TargetType *Target() const { return target; }
- void PointTo( TargetType &t ) { target = &t; }
-
- void operator=( TargetType *t ) { target = t; }
- operator TargetType *() const { return target; }
-
- TargetType& operator*() const { Assert( target != 0 ); return *target; }
- TargetType *operator->() const { Assert( target != 0 ); return target; }
- };
-
- #endif
-